The present invention generally relates to systems and methods for vertically integrated distribution of data via a server complex. In particular, the invention relates to systems and methods for controlling receipt and distribution of scheduled data in one or more server complexes.
Digital systems for the storage, distribution, and display of data are commonplace and come in many forms. These systems are commonly referred to as DSDD systems. A video-on-demand (VOD) system is an example of a system that utilizes all these capabilities.
A VOD system is a system for the delivery of customer selected video/audio content or programming (hereinafter “content”) directly to the customer at a time chosen by the customer via a cable TV or other distribution network. This fast growing segment of the entertainment industry is enabled by new technology, but sales are driven by the availability of up-to-date content demanded by consumers.
While the concepts of distribution chain management, inventory management, and point of sale access are common in the world of retail goods, they have historically been difficult to implement in the digital domain where, for example, one might want to design a system for the sale of movies on demand. In the world of physical goods, when the same company operates the distribution, inventory, and retail operations, it is said to be “vertically integrated”. By contrast, in the VOD environment, the distribution management, storage management, and data access management are not tightly coordinated. Consequently, when many newly available items, such as recently released movies or time-sensitive content, become available, the distribution system may miss-utilize resources or the network. As a result, the system might lose revenue in that resources and network capacity may be wasted storing content when they could have been used to respond to a customer request (a revenue event) for content.
DSDD systems are growing to meet advancing demands for larger data types, such as video, for different performance needs for readers or writers of data and for the growing maximum simultaneous output of content to customers. These increasing demands further exacerbate the resource contentions mentioned above.
Typically, DSDD systems are comprised of “special use servers” interconnected to meet the demands of a particular application, such as video or web serving. A “storage server” is a type of special use server that allows users to retrieve information from one or a plurality of disks or secondary storage (e.g., a magnetic disk or an optical-disk jukebox).
Storage servers are often interconnected to form a “storage area network” (SAN). Other types of special use servers that provide applications other than storage to users (herein “application servers”) may either read from or write to the SAN through a storage server. For example, one type of application server is a web server that accepts user requests to view a particular web page from a web site, retrieves the requested web page from the SAN, and delivers the web page to the user. Another type of application server is a video server that retrieves content from the SAN and delivers it to the user.
One physical server may operate simultaneously as both a storage server and also as an application server. Storage and application servers are typically organized into geographically proximate units called “server complexes” in order to take advantage of technical and financial efficiencies of proximity. Therefore, SANs are typically implemented as a server complex.
The conventional system architecture of DSDD systems may be analogized to those that provide physical goods for sale. For example, DSDD systems may be analogized to the physical process of distributing and selling books. In this analogy, storage servers may be analogous to bookshelves in a stockroom, where the SAN is analogous to the stockroom, and the application server is analogous to the display cases in the bookstore. Architectures that combine the storage server and the application server are similar to a bookstore that has no stock room and in which all the books are on the bookshelves within display cases. The bookstore itself may be analogized to a server complex. Distribution to multiple server complexes is similar to distribution to multiple bookstores.
In a bookstore environment, it is undesirable to have all the trucks delivering books to the same store, at the same time, on the same road and attempting to utilize the same docking bay. It is further undesirable to have the employees that are assigned as cashiers stop their jobs in order to go unload the trucks and stock the shelves.
Fortunately, systems have been devised to ameliorate resource contentions scenarios in the brick and mortar world, such as a bookstore. However, unlike the bookstore example, DSDD systems do not have tightly integrated inventory selection, distribution management, inventory management, and data access management.
For example, in VOD systems, the same CPU and disks that are being used to serve movies to users are typically used simultaneously to stock an incoming movie. In these VOD systems, content is typically made available via satellite feeds from the content provider and placed into the DSDD with little, if any, regard to the number of users currently viewing videos or the amount of storage space available in the server complex. Therefore, incoming inventory may not be available on the desired schedule, it may require allocation of resources that might be more desirable to allocate to displaying existing inventory, or the distribution might even fail altogether, leaving the wrong mix of inventory on the server complex.
Some strategies have been developed for mitigating the resource contentions mentioned above. One widely used strategy in SANs is to employ a “back channel” for server-to-server communications (referred to as out-of-band communication) and a “front channel” for server-to-user communications (referred to as in-band communication). This strategy is much like using the back door of a bookstore to stock the storeroom and using the front door to let shoppers in.
As DSDD systems are being required to turnover larger and larger amounts of data and serve more and more users simultaneously, the strategy of utilizing in-band and out-of-band communication may alleviate some of the concerns mentioned above. However, this strategy will ultimately fall far short, because the SAN is still a shared resource to both communication networks. The CPU cycles for receiving data over the out-of-band network compete with CPU cycles for putting data on the in-band network. Similarly, there is potential competition for the disk bandwidth of a disk in the SAN that is simultaneously receiving new data inventory and playing out existing data inventory. This competition for resources is analogous to an unfortunate store clerk attempting to simultaneously take boxes off the truck and work as a cashier.
There are many obstacles to overcome in order to implement a vertically integrated DSDD system when resources are not dedicated to exclusive tasks. Among other issues, the system must know what is currently happening and what to do when unexpected failures occur.
Returning to the bookstore analogy, if all the trucks are sent to the same loading dock but one breaks down in the dock, none of the trucks will be able to unload their cargo. In this situation, human intervention may direct unloading to occur at another location.
In a DSDD system, the complex tasks of handling resource and performing real-time corrections need to be done without human intervention. The sheer number of resources that might be involved —millions of packets of information per second stored on hundreds of disks being written to tens of machines and read by thousand—tends to make the logistical issues more complex in the digital domain.
Finally, in DSDD systems, resource reservation schemes are notoriously difficult to implement because of the vast number of permutations of programs that may be running at any given time. For example, if there are four programs running on a special use server, and each program may perform any one of ten functions, there are over 1,000,000 possible resource states. Because of the extreme difficulty of examining source code and computing the expected resource load of a computer process, “system benchmarks” are empirically derived. Of course, it is infeasible to benchmark all the states of even the very simplest of systems, such as in the previous example, with four programs and over 1,000,000 states.
This issue is similar to issues that arise in brick and mortar distribution systems. In the bookstore distribution example, it is infeasible to plan resource utilization in terms of the horsepower of the trucks or the intelligence of the store manager. Rather, each link in the distribution chain is quantized in terms of moving or consuming books, i.e., how many books the truck can carry, how many books the store room can hold, how long it takes to transfer a truck load of books from the truck to the stock room, etc.
Conventional DSDD systems do not quantize resources in terms of the main application, the DSDD system servers. Rather, existing DSDD systems typically build on the quantization units of the system component, e.g., megahertz of processing power, megabytes of RAM, or megabytes of disk throughput. While capabilities of specific special use servers of a DSDD, such as a web server or video server, may be quantized according to their main uses, e.g., serving web pages or video streams, vertically integrated DSDD systems which quantify all their sub-components in terms of their main use have not yet been developed.
There is therefore a need in the art for a vertically integrated DSDD system that quantizes system resources in terms of the main use of the system such that the resource management issues above may be addressed by allowing the DSDD system to optimize resources and the network by assigning exclusive resources for each task. This would enable a particular storage server's resources or a portion of its resources to, over a given period of time, be tasked exclusively with the reception of incoming data while another portion of the storage server's resources or another storage server's resources would be tasked exclusively with the play out of existing data.